<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>day05作业</title>
</head>
<input type="text" name="" id="txt1">
<input type="button" name="" value="!">
<input type="button" name="" id="btn" value="=">
<input type="text" name="" id="txt2" disabled>

<body>

</body>
<script>
    // 利用递归求10的阶乘（1*2*3*4*5*…*29*30）
    function fn(n) {
        if (n === 1 || n === 0) {
            return 1;
        }
        return n * fn(n - 1);
    }
    console.log(fn(10));

    // 利用递归求斐波那契数列（1，1，2，3，5，8，13，21，34，55，89...）
    function fb(n) {
        if (n === 2) {
            return 1;
        } else if (n === 1) {
            return 1;
        } else {
            return fb(n - 1) + fb(n - 2);
        }
    }
    console.log(fb(10));

    // 利用递归求两个数字最大公约数
    function zz(m, n) {
        if (m % n == 0) {
            return n;
        } else {
            return zz(n, m % n);

        }
    }
    console.log(zz(1997, 615))

    // 编写一个函数，输入n为偶数时，调用函数求1/2+1/4+...+1/n,当输入n为奇数时，调用函数求1+1/3+...+1/n    循环和递归
    // 1.使用循环实现
    function xh(n) {
        var sum = 0;
        if (n % 2 == 0) {
            for (var i = 2; i <= n; i += 2) {
                sum += (1 / i);
            }
        } else {
            for (var i = 1; i <= n; i += 2) {
                sum += (1 / i)
            }
        }
        return sum;
    }
    console.log(xh(4));

    // 2.使用递归实现
    function dg(n) {
        if (n % 2 == 0) {
            if (n == 2) {
                return 1 / 2;
            } else {
                return (1 / n) + dg(n - 2);
            }
        } else {
            if (n == 1) {
                return 1;
            } else {
                return (1 / n) + dg(n - 2);
            }
        }
    }
    console.log(dg(4));

    // 2.使用函数完成任意数字阶乘的计算 要求：页面输入任意数字，点击按钮后计算阶乘
    var txt1 = document.getElementById("txt1");
    var txt2 = document.getElementById("txt2");
    var btn = document.getElementById("btn");

    function jc(n) {
        if (n === 1) {
            return 1;
        } else {
            return n * jc(n - 1);
        }
    }
    btn.onclick = () => {
        txt2.value = jc(parseInt(txt1.value))
    }

    // 常见事件与函数的结合（将信息打印在控制台）
</script>

</html>